#List列表 - 是一种有序的可以更改的集合，列表中的元素可以重复
# 创建列表可以使用[] 或者 list()

# 创建空的列表
# nums = [] 
nums = list() 
# print(nums)  

#非空的列表
nums = [2,4,6,8,8]
print(nums)    #[2, 4, 6, 8, 8]   存放有序，允许有重复的元素

ss = ['hello','python','web','web',20]    
print(ss)   #['hello', 'python', 'web', 'web', 20]

'''
列表每一个元素都分配一个整数，称为索引，左边从0开始（正索引），右边从-1开始（负索引） 
['hello','python','web','web',20] 
    0        1      2     3    4
    -5      -4     -3    -2   -1
'''
#使用[索引]访问列表中的元素
# print(ss[0]) 
# print(ss[-5]) 
# print(ss[-1]) 


#for in - 遍历列表
# for s in ss:
#     print(s)

#len() - 获取列表长度
print(len(ss)) 
print(len([]))   

#修改列表中的元素
ss[2]='java' 
print(ss) 

# in  - 检查列表中是否包含给定的元素
print('java' in ss)   #True
print('js' in ss)   #False

print(type(ss))   #返回变量的类型  list


# +   列表拼接，生成新的列表
# print(id(ss))  # id() - 返回变量的内存地址
ss2=ss+[40,69]
print(ss) 
print(ss2) 
print(len(ss2))
# print(id(ss))  

# append()   列表的末尾添加一个元素 - 追加
# print(id(ss))  # id() - 返回变量的内存地址
# ss.append([33,51])
# print(id(ss))  
# print(ss)
# print(len(ss))

# extend() 列表末尾逐个添加给定集合中的元素 - 合并
# ss.extend([33,51])
# print(ss)
# print(len(ss)) 

#insert()   指定索引位置上插入一项
# ss.insert(1,[33,51])
# print(ss) 
#print(ss[10])   #IndexError: list index out of range

#remove()  删除给定的一个元素，（如果有多个，只删除左边开始第一个）
# ss.append('web')
# print(ss) 
# ss.remove('web')
# print(ss) 
# ss.remove("js")   #ValueError: list.remove(x): x not in list

#pop()   弹出指定位置的一个元素，并且返回弹出的元素   默认是最右边的元素
# print(ss) 
# s = ss.pop(1) #参数指定位置（索引）
# print(s)
# print(ss) 

# 新建变量指向的是同一个列表
# ss2 = ss 
# print(id(ss))
# print(id(ss2)) 

# copy()  - 复制，新建了一个列表，并且把原列表的元素复制进新的列表
# ss2 = ss.copy()
# print(id(ss))
# print(id(ss2)) 
# print(ss)
# print(ss2)  

nums=[20,21,6,18]

#reverse  - 列表元素反转
nums.reverse()
print(nums)   #[18, 6, 21, 20]

# sort() - 列表中元素排序，升序排序
nums.sort()
print(nums)  

# list*n   - 列表元素复制n次 , 原来列表不变
print(nums*4)

# max() - 返回列表中最大的元素
# min() - 返回列表中最小的元素
# sum() - 返回列表中所有元素的和
print(max(nums),min(nums),sum(nums))    















